/**
 * 柯里化
 * 逻辑复用
 */

function log(date, type, message) {
  console.log(`[${date.getHours()}:${date.getMinutes()}][${type}]: [${message}]`)
}

log(new Date(), 'debug', 'log1')
log(new Date(), 'debug', 'log2')
log(new Date(), 'debug', 'log3')
log(new Date(), 'debug', 'log4')

//柯里化进行优化
// function logMaker(date) {
//   var dateStr = `[${date.getHours()}:${date.getMinutes()}]`
//   return function (type) {
//     var typeStr = `[${type}]:`
//     return function (message) {
//       console.log(dateStr, typeStr, message)
//     }
//   }
// }

var log1 = date => type => message => console.log(`[${date.getHours()}:${date.getMinutes()}][${type}]: [${message}]`)
//可以自由分层定制
var debugLog = log1(new Date())('debug')
debugLog('this is a debug log')

/**
 * 内涵： 分多个阶段进行处理，每一个阶段可以抽离进行单独的逻辑，公用的部分可以复用，抽离公用的新函数
 */
